package dao

import (
	"errors"
	"github.com/go-redis/redis"
	"log"
	"znzc_monitor/configs"
	"znzc_monitor/configs/configEntity"
)

func OpenRedis() *redis.Client {

	redisInfo := configs.GetRedisInfo()
	log.Println("redis连接信息为：", redisInfo)

	r := Redis(redisInfo)

	RedisClient := redis.NewClient(&redis.Options{
		Addr:     r.Addr,
		Password: r.Password,
		DB:       r.Db,
	})

	return RedisClient

}

//发布
func Publish(redisClient *redis.Client, data string) error {

	//参数1 频道名 字符串类型
	//参数2 发送的内容 他是个 interface{} 类型 因为我要和前端对接 所以data是我转的json字符
	err := redisClient.Publish("alert", data).Err()

	if err != nil {
		return errors.New("发布失败")
	}

	return nil

}

func Redis(redisInfo map[string]interface{}) *configEntity.Redis {

	r := new(configEntity.Redis)

	if value, ok := redisInfo["addr"].(string); ok {
		r.Addr = value
	}

	if value, ok := redisInfo["password"].(string); ok {
		r.Password = value
	}

	if value, ok := redisInfo["db"].(int); ok {
		r.Db = value
	}

	return r

}
